home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 021-030 / amok22 / bigsets / bigsets.def next >
Text File  |  1993-11-04  |  3KB  |  85 lines

  1. (**********************************************************************
  2.  
  3.   :Program.     BigSets.def
  4.   :Contents.    Generic data type: SETs with up to 65335 elements (bits)
  5.   :Author.      Nicolas Benezan [bne]
  6.   :Address.     Postwiesenstr. 2, 7000 Stuttgart 60, Germany
  7.   :Phone.       (0)711 / 33 36 79
  8.   :Copyright.   Public Domain
  9.   :Language.    Modula-2
  10.   :Translator.  M2Amiga AMSoft V3.2d
  11.   :Imports.     TaskMemory [bne]
  12.   :History.     V1.0 [bne] 30.Jan.1989 (PC version)
  13.   :History.     V1.1 [bne] 02.Jul.1989 (Amiga version)
  14.  
  15. **********************************************************************)
  16.  
  17. DEFINITION MODULE BigSets;
  18.  
  19. FROM SYSTEM     IMPORT ADDRESS;
  20.  
  21. TYPE
  22.   BigSet; (* opaque data type: *)
  23.           (* SET OF [0..n], <n> within the range [1..MAX(CARDINAL)] *)
  24.  
  25. VAR
  26.   BigSetsAllocProc:PROCEDURE(VAR ADDRESS, LONGINT);
  27.   BigSetsDeallocProc:PROCEDURE(VAR ADDRESS);
  28.   (* defaults: TaskMemory.Allocate, TaskMemory.Deallocate *)
  29.  
  30. PROCEDURE CreateBigSet(VAR Set: BigSet;
  31.                            NumElements: CARDINAL): BOOLEAN;
  32.  
  33. (*:Input.   Set: an uninitialised (or discarded) BigSet
  34.   :Output.  Set: initialised BigSet
  35.   :Input.   NumElements: the number of elements this set should have
  36.   :Result.  FALSE if an error occured, otherwise TRUE
  37.   :Semantic.Allocates memory for the Bigset and prepares it for further
  38.   :Semantic.use. The new BigSet has all bits clear (excluded), if
  39.   :Semantic.<BigSetsAllocProc> does clear allocated memory (default).
  40.   :Note.    Do not perform any operation on uninitialised BigSets
  41. *)
  42.  
  43. PROCEDURE DiscardBigSet(VAR Set: BigSet);
  44.  
  45. (*:Input.   Set: initialised BigSet
  46.   :Output.  Set: discarded BigSet
  47.   :Semantic.Removes the whole BigSet from memory.
  48.   :Note.    After DiscardBigSet(Set) no operation is allowed on <Set>
  49. *)
  50.  
  51. PROCEDURE Include(Set: BigSet;
  52.                   Bit: CARDINAL);
  53.  
  54. (*:Input.   Set: properly initialised BigSet
  55.   :Input.   Bit: Element (bit) to be included in <Set>
  56.   :Semantic.Includes an element (same as INCL(BITSET,Bit) for BigSets)
  57. *)
  58.  
  59. PROCEDURE Exclude(Set: BigSet;
  60.                   Bit: CARDINAL);
  61.  
  62. (*:Input.   Set: properly initialised BigSet
  63.   :Input.   Bit: Element (bit) to be excluded out of <Set>
  64.   :Semantic.Excludes an element (same as EXCL(BITSET,Bit) for BigSets)
  65. *)
  66.  
  67. PROCEDURE BitInSet(Set: BigSet;
  68.                    Bit: CARDINAL): BOOLEAN;
  69.  
  70. (*:Input.   Set: properly initialised BigSet
  71.   :Input.   Bit: Element to be tested
  72.   :Result.  TRUE if <Bit> is included in <Set>, otherwise FALSE
  73.   :Note.    same as (Bit IN Set) for BigSets
  74. *)
  75.  
  76. PROCEDURE FindNextClear(    Set: BigSet;
  77.                         VAR Bit: CARDINAL): BOOLEAN;
  78. (*:Input.   Set: properly initialised BigSet
  79.   :Input.   Bit: where to start searching
  80.   :Output.  Bit: next clear (excluded) bit (if any)
  81.   :Result.  TRUE, if a clear bit was found
  82. *)
  83.  
  84. END BigSets.
  85.